home *** CD-ROM | disk | FTP | other *** search
- /* 1.0D2 -- change transfer modes from gxXorMode to gxFastXorMode
- and change SetShapeCommonTransfer to SetShapeFastTransfer
-
- 1.0B3 -- change GXGetGlyphOffsets to GXGetGlyphOffset */
-
- #include <Types.h>
- #include <QuickDraw.h>
- #include <Fonts.h>
- #include <Windows.h>
- #include <Menus.h>
- #include <SegLoad.h>
- #include <Memory.h>
- #include <Desk.h>
-
- #include "graphics routines.h"
- #include "graphics libraries.h"
- #include "graphics toolbox.h"
-
- #include "layout types.h"
- #define gxDefine_true_false_boolean
-
- #include "layout routines.h"
- #include "layout library.h"
- #include "layout feature constants.h"
-
- #include "SampleInterface.h"
-
- short MyStrLen(char *x);
- static short MyStrLen(x)
- char *x;
- {
- short c = 0;
- while (*x++) c++;
- return c;
- } /* MyStrLen */
-
- void GetGlyphOffsetsExample(WindowPtr sampleWindow)
- {
- /* Variables */
- Boolean leadingEdge, wasRealCharacter;
- char *myString = "fish-flavored stenographer";
- gxByteOffset offset;
- gxPoint myPoint;
- gxRunFeature gxRunFeature[5];
- gxShape highlight, layout;
- short len, level = 0;
- gxStyle myStyle;
- gxViewPort aViewPort;
-
- /* Initialization */
-
- myPoint.x = ff(20);
- myPoint.y = ff(80);
-
- aViewPort = GXNewWindowViewPort(sampleWindow);
- SetDefaultViewPort(aViewPort);
-
- len = MyStrLen(myString);
-
- myStyle = NewLayoutStyle((char *) "\pHoefler Text Italic", ff(60), 0, nil, nil, 0, nil);
- gxRunFeature[0].featureType = ligatureType;
- gxRunFeature[0].featureSelector = ligatureRequiredOffSelector;
- gxRunFeature[1].featureType = ligatureType;
- gxRunFeature[1].featureSelector = ligatureCommonOffSelector;
- gxRunFeature[2].featureType = ligatureType;
- gxRunFeature[2].featureSelector = ligatureRareOffSelector;
- gxRunFeature[3].featureType = ligatureType;
- gxRunFeature[3].featureSelector = ligatureLogotypeOffSelector;
- gxRunFeature[4].featureType = ligatureType;
- gxRunFeature[4].featureSelector = ligatureRebusOffSelector;
- GXSetStyleRunFeatures(myStyle, 5, gxRunFeature);
-
- layout = GXNewLayout(
- 1, &len, (void *) &myString,
- 1, &len, &myStyle,
- 1, &len, &level,
- nil, &myPoint);
- GXDrawShape(layout);
- GXGetGlyphOffset(layout, 17, true, &offset, &leadingEdge, &wasRealCharacter);
- highlight = GXGetLayoutHighlight(layout, offset, offset + 1, gxHighlightAverageAngle, nil);
- /* changed to make this invert */
- SetShapeFastXorTransfer(highlight, NULL, NULL);
- GXDrawShape(highlight);
- GXDisposeShape(layout);
- GXDisposeShape(highlight);
-
- gxRunFeature[0].featureSelector = ligatureRequiredOnSelector;
- gxRunFeature[1].featureSelector = ligatureCommonOnSelector;
- GXSetStyleRunFeatures(myStyle, 5, gxRunFeature);
- myPoint.y += ff(75);
-
- layout = GXNewLayout(
- 1, &len, (void *) &myString,
- 1, &len, &myStyle,
- 1, &len, &level,
- nil, &myPoint);
- GXDrawShape(layout);
- GXGetGlyphOffset(layout, 17, true, &offset, &leadingEdge, &wasRealCharacter);
- highlight = GXGetLayoutHighlight(layout, offset, offset + 1, gxHighlightAverageAngle, nil);
- /* changed to make this invert */
- SetShapeFastXorTransfer(highlight, NULL, NULL);
- GXDrawShape(highlight);
- GXDisposeShape(layout);
- GXDisposeShape(highlight);
-
- gxRunFeature[2].featureSelector = ligatureRareOnSelector;
- GXSetStyleRunFeatures(myStyle, 5, gxRunFeature);
- myPoint.y += ff(75);
-
- layout = GXNewLayout(
- 1, &len, (void *) &myString,
- 1, &len, &myStyle,
- 1, &len, &level,
- nil, &myPoint);
- GXDrawShape(layout);
- GXGetGlyphOffset(layout, 17, true, &offset, &leadingEdge, &wasRealCharacter);
- highlight = GXGetLayoutHighlight(layout, offset, offset + 1, gxHighlightAverageAngle, nil);
- /* changed to make this invert */
- SetShapeFastXorTransfer(highlight, NULL, NULL);
- GXDrawShape(highlight);
- GXDisposeShape(layout);
- GXDisposeShape(highlight);
-
- GXDisposeViewPort(aViewPort);
- } /* main */
-